Mobilemapi.dll
Otázka od: Roman
4. 10. 2004 8:56
Ahoj,
pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
neustale narazim na access violation:
uses mobilemapi_struct;
function info(login, pwd:PChar; Var errMsg:PChar;
Var Res:Tmobilemapi_info):Integer; external 'mobilemapi.dll';
const testlogin=''; //testovaci dle dokumentace k API
testpwd='';
procedure TForm1.Button1Click(Sender: TObject);
var err:PChar;
res:TMobilemapi_Info;
begin
Info(PChar(testlogin),PChar(testpwd),err,res);
end;
Poradi nekdo?
Diky,
Roman
Odpovedá: Jiri Cincura
4. 10. 2004 9:03
Roman wrote:
> Ahoj,
> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
> neustale narazim na access violation:
A nejni tam nejake volaci konvence stdcall; apod?
--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net
---
Nekdo vidi veci, ktere existuji, a pta se - proc?. Ja snim o vecech, ktere
nikdy neexistovaly a ptam se - proc ne? (Robert Kennedy)
Odpovedá: Petr Brant
4. 10. 2004 9:36
No jasne, nemas alokovanou pamet pro err. Musis napsat napr.
var err: array[0..255] of char namisto err: PChar a pak uz by to mohlo
fungovat.
RNDr. Petr Brant [brant@dcomm.cz]
http://brant.wz.cz <http://brant.wz.cz>
> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
> neustale narazim na access violation:
>
> uses mobilemapi_struct;
>
> function info(login, pwd:PChar; Var errMsg:PChar;
> Var Res:Tmobilemapi_info):Integer; external
> 'mobilemapi.dll';
>
> const testlogin=''; //testovaci dle dokumentace k API
> testpwd='';
>
> procedure TForm1.Button1Click(Sender: TObject);
> var err:PChar;
> res:TMobilemapi_Info;
> begin
> Info(PChar(testlogin),PChar(testpwd),err,res);
> end;
Odpovedá: Tomas Rosa
4. 10. 2004 9:18
>pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
>neustale narazim na access violation:
>
>uses mobilemapi_struct;
>
>function info(login, pwd:PChar; Var errMsg:PChar;
> Var Res:Tmobilemapi_info):Integer; external 'mobilemapi.dll';
Spravna deklarace (ze souboru mobilem_unit.pas ktery je prilozen k DLL) je:
// Vyzadani informaci o uzivateli
Function info(login, pwd : PChar; Var errMsg : PChar;
Var Res : Tmobilemapi_info) : Integer; stdcall;
tedy chybi tam STDCALL
>const testlogin=''; //testovaci dle dokumentace k API
> testpwd='';
>
>procedure TForm1.Button1Click(Sender: TObject);
>var err:PChar;
> res:TMobilemapi_Info;
>begin
> Info(PChar(testlogin),PChar(testpwd),err,res);
Po zavolani fce a zpracovani vysledku je nutne uvolnit pamet:
dllmem_free(res, err);
>end;
S pozdravem
Tomas Rosa
------------------------------=[ dcci.cz ]=--------------------------------
Tomas Rosa DCCI s.r.o.
+420 602 860 704 Tomas.Rosa@dccimobile.com
+420 777 777 269
http://www.m-game.cz
* mobilni marketing, komunikace a sluzby http://sms.mobilem.cz
---------------------------------------------------------------------------
Odpovedá: Roman
4. 10. 2004 9:26
Aha, no jo, pondeli... u external chybelo stdcall;
Diky!
> Roman wrote:
>> Ahoj,
>> pokousim se zakomponovat mobilamapi.dll (z mobilem.cz) do aplikace a
>> neustale narazim na access violation:
>
> A nejni tam nejake volaci konvence stdcall; apod?